home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / BASIC / 0006.ZIP / COSCAN.ASM < prev    next >
Assembly Source File  |  1983-06-15  |  1KB  |  69 lines

  1.     TITLE    COSCAN    - Diskette Contents List - Scan    Directory
  2.     SUBTTL    Version    1.0 - June 1983
  3.     PAGE    81,132
  4. ;
  5. CODE    SEGMENT    PARA PUBLIC 'CODE'
  6.     ASSUME    CS:CODE,DS:CODE
  7. ;
  8.     EXTRN    PNTR:WORD,SRCE:BYTE
  9. ;
  10. NORM    DB    0,'???????????'        ;Dummy FCB for "find/next"
  11.     DB    24 DUP (?)
  12. ;
  13.     PUBLIC    SCAN
  14. SCAN    PROC    NEAR
  15.     MOV    DI,OFFSET PNTR
  16.     XOR    AX,AX
  17.     MOV    CX,120
  18.     REP    STOSW            ;Clear pointer table
  19.     MOV    BX,OFFSET PNTR        ;BX points to start of pointer list
  20.     MOV    DI,OFFSET SRCE        ;DI points to start of entry stack
  21.     XOR    CX,CX
  22.     MOV    DX,OFFSET NORM
  23.     MOV    AH,11H
  24.     INT    21H            ;Get first search entry
  25.     JMP    SHORT INNER
  26. LOOP:    MOV    DX,OFFSET NORM
  27.     MOV    AH,12H
  28.     INT    21H            ;Get next entry
  29. INNER:    OR    AL,AL
  30.     JNZ    DONE
  31.     CALL    SAVE            ;Stack entry
  32.     INC    CX            ;Count entry
  33.     JMP    LOOP
  34. DONE:    RET                ;Returns count in CX
  35. SCAN    ENDP
  36. ;
  37. SAVE    PROC    NEAR
  38.     PUSH    CX
  39.     MOV    WORD PTR [BX],DI    ;Save pointer to start of entry
  40.     ADD    BX,2            ;  and step pointer table reg
  41.     MOV    SI,81H            ;Point to DTA -    file name
  42.     MOV    CX,8
  43. SVLP:    MOV    AL,BYTE    PTR [SI]
  44.     CMP    AL,' '
  45.     JZ    NMDNE            ;End of    name
  46.     MOV    BYTE PTR [DI],AL
  47.     INC    SI
  48.     INC    DI
  49.     LOOP    SVLP
  50. NMDNE:    MOV    SI,89H            ;Point to DTA type field
  51.     CMP    BYTE PTR [SI],' '
  52.     JZ    ALLDNE            ;No file type
  53.     MOV    BYTE PTR [DI],'.'
  54.     INC    DI
  55.     MOV    CX,3
  56.     REP    MOVSB            ;Move type field to stack
  57. ALLDNE:    MOV    BYTE PTR [DI],0        ;Mark end of string
  58.     INC    DI
  59.     MOV    SI,9DH            ;Point to size of file
  60.     MOV    CX,4
  61.     REP    MOVSB            ;  and save in stack
  62.     POP    CX
  63.     RET
  64. SAVE    ENDP
  65. ;
  66. CODE    ENDS
  67. ;
  68.     END
  69.